prime number algorithm